﻿/*
 Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.md or http://ckeditor.com/license
 */
CKEDITOR.dialog.add("paste", function (c) {
    function k(a) {
        var b = new CKEDITOR.dom.document(a.document), g = b.getBody(), d = b.getById("cke_actscrpt");
        d && d.remove();
        g.setAttribute("contenteditable", !0);
        g.on(e.mainPasteEvent, function (a) {
            a = e.initPasteDataTransfer(a);
            f ? a != f && (f = e.initPasteDataTransfer()) : f = a
        });
        if (CKEDITOR.env.ie && 8 > CKEDITOR.env.version)b.getWindow().on("blur", function () {
            b.$.selection.empty()
        });
        b.on("keydown", function (a) {
            a = a.data;
            var b;
            switch (a.getKeystroke()) {
                case 27:
                    this.hide();
                    b = 1;
                    break;
                case 9:
                case CKEDITOR.SHIFT +
                9:
                    this.changeFocus(1), b = 1
            }
            b && a.preventDefault()
        }, this);
        c.fire("ariaWidget", new CKEDITOR.dom.element(a.frameElement));
        b.getWindow().getFrame().removeCustomData("pendingFocus") && g.focus()
    }

    var h = c.lang.clipboard, e = CKEDITOR.plugins.clipboard, f;
    c.on("pasteDialogCommit", function (a) {
        a.data && c.fire("paste", {
            type: "auto",
            dataValue: a.data.dataValue,
            method: "paste",
            dataTransfer: a.data.dataTransfer || e.initPasteDataTransfer()
        })
    }, null, null, 1E3);
    return {
        title: h.title, minWidth: CKEDITOR.env.ie && CKEDITOR.env.quirks ? 370 :
            350, minHeight: CKEDITOR.env.quirks ? 250 : 245, onShow: function () {
            this.parts.dialog.$.offsetHeight;
            this.setupContent();
            this.parts.title.setHtml(this.customTitle || h.title);
            this.customTitle = null
        }, onLoad: function () {
            (CKEDITOR.env.ie7Compat || CKEDITOR.env.ie6Compat) && "rtl" == c.lang.dir && this.parts.contents.setStyle("overflow", "hidden")
        }, onOk: function () {
            this.commitContent()
        }, contents: [{
            id: "general", label: c.lang.common.generalTab, elements: [{
                type: "html", id: "securityMsg", html: '\x3cdiv style\x3d"white-space:normal;width:340px"\x3e' +
                h.securityMsg + "\x3c/div\x3e"
            }, {
                type: "html",
                id: "pasteMsg",
                html: '\x3cdiv style\x3d"white-space:normal;width:340px"\x3e' + h.pasteMsg + "\x3c/div\x3e"
            }, {
                type: "html", id: "editing_area", style: "width:100%;height:100%", html: "", focus: function () {
                    var a = this.getInputElement(), b = a.getFrameDocument().getBody();
                    !b || b.isReadOnly() ? a.setCustomData("pendingFocus", 1) : b.focus()
                }, setup: function () {
                    var a = this.getDialog(), b = '\x3chtml dir\x3d"' + c.config.contentsLangDirection + '" lang\x3d"' + (c.config.contentsLanguage || c.langCode) +
                        '"\x3e\x3chead\x3e\x3cstyle\x3ebody{margin:3px;height:95%;word-break:break-all;}\x3c/style\x3e\x3c/head\x3e\x3cbody\x3e\x3cscript id\x3d"cke_actscrpt" type\x3d"text/javascript"\x3ewindow.parent.CKEDITOR.tools.callFunction(' + CKEDITOR.tools.addFunction(k, a) + ",this);\x3c/script\x3e\x3c/body\x3e\x3c/html\x3e", g = CKEDITOR.env.air ? "javascript:void(0)" : CKEDITOR.env.ie && !CKEDITOR.env.edge ? "javascript:void((function(){" + encodeURIComponent("document.open();(" + CKEDITOR.tools.fixDomain + ")();document.close();") +
                    '})())"' : "", d = CKEDITOR.dom.element.createFromHtml('\x3ciframe class\x3d"cke_pasteframe" frameborder\x3d"0"  allowTransparency\x3d"true" src\x3d"' + g + '" aria-label\x3d"' + h.pasteArea + '" aria-describedby\x3d"' + a.getContentElement("general", "pasteMsg").domId + '"\x3e\x3c/iframe\x3e');
                    f = null;
                    d.on("load", function (a) {
                        a.removeListener();
                        a = d.getFrameDocument();
                        a.write(b);
                        c.focusManager.add(a.getBody());
                        CKEDITOR.env.air && k.call(this, a.getWindow().$)
                    }, a);
                    d.setCustomData("dialog", a);
                    a = this.getElement();
                    a.setHtml("");
                    a.append(d);
                    if (CKEDITOR.env.ie && !CKEDITOR.env.edge) {
                        var e = CKEDITOR.dom.element.createFromHtml('\x3cspan tabindex\x3d"-1" style\x3d"position:absolute" role\x3d"presentation"\x3e\x3c/span\x3e');
                        e.on("focus", function () {
                            setTimeout(function () {
                                d.$.contentWindow.focus()
                            })
                        });
                        a.append(e);
                        this.focus = function () {
                            e.focus();
                            this.fire("focus")
                        }
                    }
                    this.getInputElement = function () {
                        return d
                    };
                    CKEDITOR.env.ie && (a.setStyle("display", "block"), a.setStyle("height", d.$.offsetHeight + 2 + "px"))
                }, commit: function () {
                    var a = this.getDialog().getParentEditor(),
                        b = this.getInputElement().getFrameDocument().getBody(), c = b.getBogus(), d;
                    c && c.remove();
                    d = b.getHtml();
                    setTimeout(function () {
                        a.fire("pasteDialogCommit", {dataValue: d, dataTransfer: f || e.initPasteDataTransfer()})
                    }, 0)
                }
            }]
        }]
    }
});